<!DOCTYPE html>
<html>
<body>
<input type="file" name="file" id="file" onchange="onInputFileChange()">
<pre id='console'></pre>

<script>
var fileReader;
var receivedProgressEvent = false;

function log(message)
{
    document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
}

function onLoadStart()
{
    log("Received loadstart event");

    fileReader.removeEventListener("abort", onAbort, false);

    var event = document.createEvent("Events");
    event.initEvent("foo", false, false);
    fileReader.dispatchEvent(event);
}

function onProgress()
{
    receivedProgressEvent = true;
}

function onLoad()
{
    if (receivedProgressEvent)
        log("Received progress event");
    log("Received load event");
}

function onLoadEnd()
{
    log("Received loadend event");
    log("DONE");
    
    fileReader.removeEventListener("loadstart", onLoadStart, false);
    fileReader.removeEventListener("load", onLoad, false);
    fileReader.removeEventListener("error", onError, false);

    if (window.testRunner)
        testRunner.notifyDone();
}

function onAbort()
{
    log("Received abort event");
}

function onError(event)
{
    log("Received error event: " + event.target.error.code);
}

function onFoo()
{
    log("Received foo event");
}

function onInputFileChange()
{
    log("Test that FileReader's event listener works.");

    var file = document.getElementById("file").files[0];
    fileReader = new FileReader();
    fileReader.readAsText(file);
    fileReader.addEventListener("loadstart", onLoadStart, false);
    fileReader.addEventListener("progress", onProgress, false);
    fileReader.addEventListener("load", onLoad, false);
    fileReader.addEventListener("loadend", onLoadEnd, false);
    fileReader.addEventListener("abort", onAbort, false);
    fileReader.addEventListener("error", onError, false);
    fileReader.addEventListener("foo", onFoo, false);
}

function runTests()
{
    eventSender.beginDragWithFiles(['resources/UTF8.txt']);
    eventSender.mouseMoveTo(10, 10);
    eventSender.mouseUp();
}

if (window.eventSender) {
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }
    window.onload = runTests;
} else {
    log("eventSender is not present.");
}
</script>
</body>
</html>
